package process

import (
	"../../common/utils"
	"fmt"
	"net"
	"os"
	"../../common/message"
	"encoding/json"
)

type Server struct {
}

func ShowMenu(userId int) {
	fmt.Printf("--------恭喜 %d 登陆成功--------\n", userId)
	fmt.Println("--------1.显示在线用户列表--------")
	fmt.Println("--------2.发送消息--------")
	fmt.Println("--------3.信息列表--------")
	fmt.Println("--------4.退出系统--------")
	fmt.Println("请选择(1~4):")

	var key int
	var content string
	sms := &SmsProcess{}

	fmt.Scanf("%d\n", &key)
	switch key {
	case 1:
		outputUserOnline()
	case 2:
		fmt.Println("你想对大家说点什么")
		fmt.Scanf("%s\n", &content)
		sms.SendGroupMes(content)
	case 3:
	case 4:
		os.Exit(0)
	default:
	}
}

func serverProcessMes(conn net.Conn) {

	tf := &utils.Transfer{
		Conn: conn,
	}
	for {
		fmt.Println("客户端正在等待读取服务器发送的消息")
		msg, err := tf.ReadPkg()
		if err != nil {
			fmt.Println("tf.ReadPkg err=", err)
			return
		}
		
		switch msg.Type {
		case message.UserStatusNotifyMesType:
			var userStatusNotifyMes message.UserStatusNotifyMes
			err = json.Unmarshal([]byte(msg.Data), &userStatusNotifyMes)
			if err != nil {
				fmt.Println("userStatusNotifyMes json unmarshal err = ", err)
				return
			}

			updateUserStatus(&userStatusNotifyMes)
		case message.SmsMesType:
			var smsMes message.SmsMes
			err = json.Unmarshal([]byte(msg.Data), &smsMes)
			if err != nil {
				fmt.Println("smsMes json unmarshal err = ", err)
				return
			}

			fmt.Printf("用户: %d 消息：%s\n", smsMes.UserId, smsMes.Content)

		default:
			fmt.Println("服务器返回了未知的消息类型")
		}

		fmt.Printf("mes=%v", msg)
	}
}
